﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using BL;
using CrystalDecisions.Shared;

namespace UI.DireccionAcademica
{
    public partial class frmRegistroAuxiliar : System.Web.UI.Page
    {
        private Reporte rptreporte = new Reporte();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {


                llenaCombos();
            }
        }

       

        void llenaCombos()
        {
            DataTable dato = new DataTable();
            Alumno_BL obj = new Alumno_BL();

            dato = obj.DATA_ESPECIALIDAD_ListaEspecialidades();
            ddlEspecialidad.DataSource = dato;
            ddlEspecialidad.DataTextField = "desesp";
            ddlEspecialidad.DataValueField = "cod_Espec";
            ddlEspecialidad.DataBind();
            ddlEspecialidad.Items.Insert(0, "--Selecciones--");


            dato.Clear();
            dato = obj.DATA_PERIODO_listaxSemestre("TODOS");
            ddlSemestre.DataSource = dato;
            ddlSemestre.DataTextField = "semestre";
            ddlSemestre.DataValueField = "semestre";
            ddlSemestre.DataBind();
            ddlSemestre.Items.Insert(0, "--Selecciones--");

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            // se valida que el usuario selecciones un semestre y especialidad

            if (ddlSemestre.SelectedIndex == 0)
            {
                lblMensaje.Text = "Selecciones un Semestre";
            }

            if (ddlEspecialidad.SelectedIndex == 0)
            {
                lblMensaje.Text = "Seleccione una Especialidad";
            }

            Secretaria_BL OBJ = new Secretaria_BL();
            DataTable dato = new DataTable();
            dato = OBJ.DATA_MATRIC1_ListaNominas(ddlSemestre.SelectedValue, ddlCiclo.SelectedValue, ddlEspecialidad.SelectedValue);
            grvNomina.DataSource = dato;
            grvNomina.DataBind();

            CuentaItemsGrilla(dato);
        }

        public void CuentaItemsGrilla(DataTable dato)
        {
            if (dato.Rows.Count == 0)
            {
                grvNomina.Caption = "No se encontró coincidencias";
            }
            else if (dato.Rows.Count == 1)
            {
                grvNomina.Caption = "Total de items - 1 registro encontrado";
            }
            else
            {
                grvNomina.Caption = "Total de items - " + dato.Rows.Count + " registros encontrados";
            }
        }



        protected void grvNomina_SelectedIndexChanged(object sender, EventArgs e)
        {

            String semestre = grvNomina.SelectedRow.Cells[0].Text.ToString();
            string ciclo = grvNomina.SelectedRow.Cells[2].Text.ToString();
            string especialidad = grvNomina.SelectedRow.Cells[1].Text.ToString();
            llenaGrilla(semestre, ciclo, especialidad, "rptFichaAuxiliar.rpt");
        }

        void llenaGrilla(String semestre, string ciclo, string especialidad,string rpt)
        {
            DataTable dato6 = new DataTable();
            // lis.Clear();
            Alumno_BL obj = new Alumno_BL();
            dato6 = obj.DATA_MATRIC1_Nomina_Edita_DATATABLE(semestre, ciclo, especialidad);

            String cicloRomano = "";
            Util_BL objUtil2 = new Util_BL();
            cicloRomano = objUtil2.CICLO_ROMANO(ciclo);

            // se arma un datatable co los datos de especialidad ciclo escuela
            Util_BL objUtil = new Util_BL();
            DataTable dato = new DataTable();
            DataTable dato2 = new DataTable();
            DataTable dato3 = new DataTable();
            dato = objUtil.DATA_ESPECIALIDAD_ListaPorCodigo(especialidad);

            DataTable Cabecera = new DataTable();
            Cabecera.Columns.Add("EscuelaProfesional");
            Cabecera.Columns.Add("Especialidad");
            Cabecera.Columns.Add("Ciclo");
            Cabecera.Columns.Add("Semestre");
            
            DataRow fila = Cabecera.NewRow();
            fila[0] = dato.Rows[0]["Descripcion"].ToString();
            fila[1] = ddlEspecialidad.SelectedItem.Text;
            fila[2] = ciclo;
            fila[3] = semestre;
           
            Cabecera.Rows.Add(fila);

            Cabecera.AcceptChanges();
            Cabecera.TableName = "Cabecera";

            DataTable ficha = new DataTable();
            ficha.Columns.Add("Codigo");
            ficha.Columns.Add("Nombres");
          
            // se obtiene los datos del detalle
           
            String codigo;
            String nombres;
            

            foreach (DataRow row in dato6.Rows)
            {

                codigo = row["COD_ALUMNO"].ToString();
                nombres = row["Nombres"].ToString();


                DataRow fila2 = ficha.NewRow();
                fila2[0] = codigo;
                fila2[1] = nombres;

                ficha.Rows.Add(fila2);

            }



            /*se exporta a excel*/
            DataSet dsFichaAuxiliar = new DataSet();

            Cabecera.TableName = "Cabecera";
            ficha.TableName = "Ficha";

            dsFichaAuxiliar.Tables.Add(Cabecera);
            dsFichaAuxiliar.Tables.Add(ficha);
            /*rptreporte.ResourceName = rpt;
            rptreporte.SetDataSource(dsFichaAuxiliar);
            rptreporte.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, Response, true, semestre + "-" + especialidad.Trim() + ciclo.Trim());

            rptreporte.Close();*/

            if (rpt.Equals("rptFichaAuxiliar.rpt"))
            {
                DescragarReporteAuxiliarPdf(dsFichaAuxiliar);
            }
            else {
                DescragarReporteAsistenciaPdf(dsFichaAuxiliar);
            }
            
        }





        private void DescragarReporteAuxiliarPdf(DataSet dsFichaAuxiliar)
        {
           
            rptFichaAuxiliar reporte = new rptFichaAuxiliar();
            ReporteComprobanteVenta_BL rcv = new ReporteComprobanteVenta_BL();
           
            reporte.SetDataSource(dsFichaAuxiliar);
            System.IO.MemoryStream rptStream = new System.IO.MemoryStream();
            rptStream = (System.IO.MemoryStream)reporte.ExportToStream(ExportFormatType.PortableDocFormat);
            Response.Clear();
            Response.Buffer = true;
            Response.ContentType = "application/pdf";
            Response.AddHeader("Content-Disposition", "attachment;filename=" + "ReporteAuxiliar" + ".pdf");

            Response.BinaryWrite(rptStream.ToArray());
            reporte.Close();
            Response.End();
        }


        private void DescragarReporteAsistenciaPdf(DataSet dsFichaAuxiliar)
        {

            rptAsistencia reporte = new rptAsistencia();
            ReporteComprobanteVenta_BL rcv = new ReporteComprobanteVenta_BL();

            reporte.SetDataSource(dsFichaAuxiliar);
            System.IO.MemoryStream rptStream = new System.IO.MemoryStream();
            rptStream = (System.IO.MemoryStream)reporte.ExportToStream(ExportFormatType.PortableDocFormat);
            Response.Clear();
            Response.Buffer = true;
            Response.ContentType = "application/pdf";
            Response.AddHeader("Content-Disposition", "attachment;filename=" + "ReporteAsistencia" + ".pdf");

            Response.BinaryWrite(rptStream.ToArray());
            reporte.Close();
            Response.End();
        }


        private void DescragarReporteExcel(DataSet dsFichaAuxiliar)
        {
            rptFichaAuxiliar reporte = new rptFichaAuxiliar();
            ReporteComprobanteVenta_BL rcv = new ReporteComprobanteVenta_BL();
           
            reporte.SetDataSource(dsFichaAuxiliar);
            System.IO.MemoryStream rptStream = new System.IO.MemoryStream();
            rptStream = (System.IO.MemoryStream)reporte.ExportToStream(ExportFormatType.PortableDocFormat);
            Response.Clear();
            Response.Buffer = true;
            Response.ContentType = "application/ms-excel";
            Response.AddHeader("Content-Disposition", "attachment;filename=" + "ImpresionNomina" + ".xlsx");

            Response.BinaryWrite(rptStream.ToArray());
            reporte.Close();
            Response.End();
        }


        protected void grvNomina_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Asistencia")
            {

                GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer);
                String semestre =  ((DataControlFieldCell)row.Cells[0]).Text.ToString();
                string ciclo = ((DataControlFieldCell)row.Cells[2]).Text.ToString();
                string especialidad = ((DataControlFieldCell)row.Cells[1]).Text.ToString();

                llenaGrilla(semestre, ciclo, especialidad, "rptAsistencia.rpt");



            }
        }
      

       

    }
}